package com.feri.fs.provider.core;

import java.io.File;

public class FileUtils {
    //代码生成的根目录
    public static String baseDIR="codegen";
    //记录源码要存储的包对应的文件夹-三层
    public static String[] pknames;
    static {
        pknames=new String[]{
                "entity",
                "dao",
                "mapper",
                "service/intf",
                "service/impl",
                "controller",
                "vo"
        };
    }
    /**
     * 将包名转换为文件夹，保证上下级关系*/
    public static String parsePageNameDir(String basePk){
        //com.feri.fs.provider.core;
        //验证根目录是否存在
        File file=new File(baseDIR);
        if(!file.exists()){
            file.mkdirs();
        }
        //包转换未路径关系，.替换为/
        String r=basePk.replaceAll("[.]","/");
        //验证包对应的文件是否存在，不存在就创建
        File pkFile=new File(file,r);
        if(!pkFile.exists()){
            pkFile.mkdirs();
        }
        //循环生成三层包对应的文件夹
        for(String f:pknames){
            File child=new File(pkFile,f);
            if(!child.exists()){
                child.mkdirs();
            }
        }
        //返回路径
        return pkFile.getPath();
    }
    /**
     * 删除文件夹*/
    public static void delDirs(File dir){
        //1.验证是否为文件，如果是文件，直接删除
        if(dir.isFile()){
            dir.delete();
        }else {
            //2.文件夹，获取子文件或文件夹
            File[] childs=dir.listFiles();
            //3.遍历，删除 递归算法：自己调用自己
            for(File f:childs){
                //删除文件夹
                delDirs(f);
            }
            //回删文件夹
            dir.delete();
        }
    }

}
